package com.chenju.invokechainservice.dao;

import com.chenju.invokechainservice.domain.TMethodNode;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.data.neo4j.repository.query.Query;

import java.util.List;

public interface TMethodNodeRepository extends Neo4jRepository<TMethodNode, Long> {
    TMethodNode findTMethodNodeByName(String name);

    TMethodNode findTMethodNodeByNameAndDescriptor(String name, String descriptor);

    @Query("MATCH (m:TClassOrInterfaceNode)-[r:CONTAINS]->(n:TMethodNode) WHERE m.name=$className and n.isOverride=true RETURN n")
    List<TMethodNode> findAllOverrideMethodsByName(String className);

    @Query("MATCH (m:TClassOrInterfaceNode)-[r:CONTAINS]->(n:TMethodNode) WHERE m.name=$className RETURN n")
    List<TMethodNode> findByClassName(String className);

}
